a tool for shared writing and social publishing
at update/reader 40 lines 1.2 kB view raw
1import { z } from "zod"; 2import { makeRoute } from "../lib"; 3import type { Env } from "./route"; 4import { getIdentityData } from "actions/getIdentityData"; 5 6export type GetUserRecommendationsReturnType = Awaited< 7 ReturnType<(typeof get_user_recommendations)["handler"]> 8>; 9 10export const get_user_recommendations = makeRoute({ 11 route: "get_user_recommendations", 12 input: z.object({ 13 documentUris: z.array(z.string()), 14 }), 15 handler: async ({ documentUris }, { supabase }: Pick<Env, "supabase">) => { 16 const identity = await getIdentityData(); 17 const currentUserDid = identity?.atp_did; 18 19 if (!currentUserDid || documentUris.length === 0) { 20 return { 21 result: {} as Record<string, boolean>, 22 }; 23 } 24 25 const { data: recommendations } = await supabase 26 .from("recommends_on_documents") 27 .select("document") 28 .eq("recommender_did", currentUserDid) 29 .in("document", documentUris); 30 31 const recommendedSet = new Set(recommendations?.map((r) => r.document)); 32 33 const result: Record<string, boolean> = {}; 34 for (const uri of documentUris) { 35 result[uri] = recommendedSet.has(uri); 36 } 37 38 return { result }; 39 }, 40});